package com.obelisco.vista.plantillas;

import java.util.List;

import org.springframework.core.io.Resource;

import com.obelisco.vista.componentes.IProcesadorReporte;
import com.obelisco.vista.componentes.TipoFuncion;
import com.obelisco.vista.herramientas.ImpresionUtils;

public class VentanaReporteSimple extends VentanaReporteBase {

	private Resource archivoReporte;

	private IProcesadorReporte procesadorReporte;

	private List listaParametros;

	@Override
	protected void onCancelar() {
		getContenedorReporte().inicializar();	
	}	
	
	public List getListaParametros() {
		return listaParametros;
	}

	@Override
	public void inicializar() {
		// TODO Auto-generated method stub
	}

	@Override
	public void onFuncionPersonalizada(Object objeto, TipoFuncion tipoFuncion,
			String nombre) {
		// TODO Auto-generated method stub
		// En este tipo de Dialogo NO se invoca
	}

	@Override
	public void setParametros(List listaParametros) {
		this.listaParametros = listaParametros;
	}

	@Override
	public void onImprimirReporte() {
		String ruta;
		if (getContenedorReporte().rutaArchivoReporte() != null)
		{
			ruta = getContenedorReporte().rutaArchivoReporte(); 
		}
		else
		{
			ruta = archivoReporte.getDescription().substring(archivoReporte.getDescription().indexOf("/WEB-INF"), archivoReporte.getDescription().length()-1);
		}
		
		ImpresionUtils.imprimir(getContenedorReporte().obtenerLista(), getContenedorReporte().obtenerParametros(),procesadorReporte, ruta, this);
		// TODO:
		/*Map parametros = getContenedorReporte().extraerParametros();

		Archivo resultado;
		try {
			if ((getContenedorReporte().rutaArchivoReporte() == null) || (getContenedorReporte().rutaArchivoReporte().equals("")))
			{
				resultado = getProcesadorReporte().generarReporte(
						archivoReporte.getFile().getAbsolutePath(), parametros);
			}
			else
			{
				ServletContextResource resource = new ServletContextResource(WebContainerServlet.getActiveConnection().getServlet().getServletContext(),getContenedorReporte().rutaArchivoReporte());
				resultado = getProcesadorReporte().generarReporte(resource.getFile().getAbsolutePath(), parametros);
			}

			Integer id = generarID();

			HttpSession session = ((ContainerContext) ApplicationInstance
					.getActive().getContextProperty(
							ContainerContext.CONTEXT_PROPERTY_NAME))
					.getSession();

			session.setAttribute(id.toString(), resultado);

			Command command = new BrowserOpenWindowCommand(
					getProcesadorReporte().getURIReporte() + "?id="
							+ id.toString(), null,
					"width=800,height=600,resizable=yes");
			ApplicationInstance.getActive().enqueueCommand(command);

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}*/

	}
	
/*	public Resource getArchivoReporte() {
		return archivoReporte;
	}*/

	public void setArchivoReporte(Resource archivoReporte) {
		this.archivoReporte = archivoReporte;
	}
	
	public IProcesadorReporte getProcesadorReporte() {
		return procesadorReporte;
	}

	public void setProcesadorReporte(IProcesadorReporte procesadorReporte) {
		this.procesadorReporte = procesadorReporte;
	}
}
